<?php
/* ***** BEGIN LICENSE BLOCK *****
 *
 * The contents of this file are subject to the Mozilla Public License Version 1.1
 * (the "License"); you may not use this file except in compliance with the
 * License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
 * the specific language governing rights and limitations under the License.
 * 
 * The Original Code is CnCNet Server code, Released 30th December 2009.
 * 
 * The Initial Developers of the Original Code are
 * Adam Krock and John Sanderson. Portions created by
 * the Initial Developer are Copyright (C) 2009
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s): Adam Krock, John Sanderson.
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either of the GNU General Public License Version 2 or later (the "GPL"),
 * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 * 
 * ***** END LICENSE BLOCK *****/
 
$hostname = "";
$username = "";
$password = "";
$database = "";

$dbc = mysql_connect($hostname, $username, $password)
	or die("Connection Error: ".mysql_error());

mysql_select_db($database)
	or die("Connection Error: Couldn't select DB");
	
$action = "";
if(isset($_GET['action'])) $action = $_GET['action'];

if($action == "add")
{
	if(!isset($_GET['port']) || !isset($_GET['name']))
		return;
	
	if(!is_numeric($_GET['port']))
		return;
	
	$ip = $_SERVER['REMOTE_ADDR'];
	$port = mysql_real_escape_string($_GET['port']);
	$name = mysql_real_escape_string($_GET['name']);
	
	// filter out illegal characters
	$illegal = array("@", ":", "[", "]");
	$name = str_replace($illegal, "", $name);
	
	$query = "REPLACE INTO cncnet_clients 
				VALUES(
				 '".$ip."', 
				 '".$port."', 
				 '".$name."', 
				 '".time()."');";
	
	$result = mysql_query($query)
		or die("Query Error: ".mysql_error());
	
	$action = "show";
}

if($action == "show")
{
	$query = "DELETE FROM cncnet_clients WHERE time < ".(time() - 15);

	mysql_query($query)
		or die("Query Error: ".mysql_error());

	$query = "SELECT ip, port, name FROM cncnet_clients";
	
	$result = mysql_query($query)
		or die("Query Error: ".mysql_error());
	
	$clientString = "";
	while($row = mysql_fetch_array($result))
		$clientString .= "@" . $row[2] . ":" . $row[0] . ":" . $row[1];
	
	echo $clientString;
}

if($action == "createTable")
{
	if(!file_exists("lock"))
	{
		$query = "CREATE TABLE cncnet_clients(
					ip VARCHAR ( 16 ) NOT NULL PRIMARY KEY,
					port INT NOT NULL,
					name VARCHAR ( 13 ) NOT NULL,
					time BIGINT NOT NULL)";

		mysql_query($query)
			or die("Query Error: ".mysql_error());
			
		echo "Table structure created";
		file_put_contents("lock","");
	}
}

mysql_close($dbc);
?>
